//1. 导入 axios
import axios from 'axios';
//导入 js 和 css 文件
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
//开启进度条效果
// NProgress.start();

// setTimeout(() => {
//   //关闭
//   NProgress.done();
// }, 3000)

//2. 创建实例
let instance = axios.create({
  baseURL: 'http://localhost:3001',
  timeout: 5000
});

//3. 请求拦截器  配置对象
instance.interceptors.request.use(config => {
  //启动进度条
  NProgress.start();
  //返回 config 对象
  return config;
});

//3. 添加响应拦截器
instance.interceptors.response.use(res => {
  //关闭进度条
  NProgress.done();
  return res.data;
}, error => {
  //公共的错误处理
  alert('请求失败, 请稍后再试~~~');
  throw error; //这种写法, 虽然在失败时, 会在控制台报错, 但是可以对指定请求进行错误处理
  // return new Promise(() => {}) //这种写法虽然可以解决代码报错的问题, 但是缺少灵活性, 无法对指定请求的失败进行处理
});

//4. 暴露
export default instance;